﻿#coding:utf-8
#!/usr/bin/env python
 
#Atalhos para outros arquivos
holofoteEsq='images/stage_lights1.png'
holofoteDir='images/stage_lights2.png'
musica='musicas/Love Games.ogg'
fundo='images/stage_background.png'
e='images/fundo.png'
inicio='musicas/metronomo.ogg'

palco='images/palco.jpg'

fogo = 'images/Fire.png'

baixo = 'images/baixista.png'
baixo1 = 'images/baixista1.png'

tuxlash = 'images/rock_tux.png'
tuxlash2 = 'images/rock_tux1.png'

tuxbatera = 'images/batera.png'
tuxbatera1 = 'images/batera1.png'

tuxverde= 'images/tux icon.png'
tuxverme= 'images/tux icon2.png'
tuxamare= 'images/tux icon4.png'
tuxazul= 'images/tux icon3.png'
tuxbran= 'images/tux icon1.png'

import pygame
from pygame.locals import *
from random import random,choice

pygame.init()

def Color(xpos):
    if xpos==200:
        cor=tuxverde
        return cor
    elif xpos==290:
        cor=tuxverme
        return cor
    elif xpos==380:
        cor=tuxamare
        return cor
    elif xpos==470:
        cor=tuxazul
        return cor
    elif xpos==560:
        cor=tuxbran
        return cor     
              
def nota(xpos,ypos):
    cor=Color(xpos)
    #a=pygame.draw.circle(ecra, cor, (xpos, ypos), 20)
    a=ecra.blit(cor,(xpos,ypos))  
    return a 

def chkcor(cor):
    if cor==200:
        cor=K_F2
        return cor
    elif cor == 290:
        cor=K_F3
        return cor
    elif cor == 380:
        cor=K_F4
        return cor
    elif cor == 470:
        cor=K_F5
        return cor
    elif cor == 560:
        cor=K_F6
        return cor

def notaok(xpos1,xpos2,ypos,pontos): #posverde, posverme ,posamare, posazul, posbran
    tecla= pygame.key.get_pressed()
    c,d=xpos1,xpos2

    xpos1=chkcor(xpos1)
    xpos2=chkcor(xpos2)
    if (tecla[K_SPACE] and tecla[xpos1] and tecla[xpos2]): 
        if ypos==500: 
            ecra.blit(fogo,(c-90,450))
            ecra.blit(fogo,(d-90,450))  
            pontos+=1
    return pontos
                
vermelho = (255, 0, 0)
preto = (0, 0, 0)
posCores=(200,290,380,470,560)

posverde, posverme ,posamare, posazul, posbran= 200, 290, 380, 470, 560

comprimento_ecra, altura_ecra = 800, 640

 
ecra = pygame.display.set_mode((comprimento_ecra, altura_ecra))
nomejogo = pygame.display.set_caption('Tux Hero')
clock =  pygame.time.Clock() 
#posicao das notas

verdepos, vermpos, amarelopos , azulpos, larpos= ((220,500),(290,500),(360,500),(430,500),(500,500))

pontos=0

#xpos=choice(posCores)
ypos = 250

#musica
pygame.mixer.init
pygame.mixer.music.load(inicio)
pygame.mixer.music.play()

ecra.fill((0,0,0))
ecra.blit(pygame.font.SysFont("tahoma", 70).render("3 ", True, (255,255,255)), (380, 250))
pygame.display.update()
pygame.time.wait(500)

ecra.fill((0,0,0))
ecra.blit(pygame.font.SysFont("tahoma", 70).render("2 ", True, (255,255,255)), (380, 250))
pygame.display.update()
pygame.time.wait(850)

ecra.fill((0,0,0))
ecra.blit(pygame.font.SysFont("tahoma", 70).render("1 ", True, (255,255,255)), (380, 250))
pygame.display.update()
pygame.time.wait(850)

pygame.mixer.init
pygame.mixer.music.load(musica)
pygame.mixer.music.play()

#cenario

holoEsq=pygame.image.load(holofoteEsq).convert()
holoDir=pygame.image.load(holofoteDir).convert()

fogo = pygame.image.load(fogo).convert_alpha()

baixo = pygame.image.load(baixo).convert_alpha()
baixo1 = pygame.image.load(baixo1).convert_alpha()

tuxlash = pygame.image.load(tuxlash).convert_alpha()
tuxlash2 = pygame.image.load(tuxlash2).convert_alpha()

tuxbatera =pygame.image.load(tuxbatera).convert_alpha()
tuxbatera1 =pygame.image.load(tuxbatera1).convert_alpha()


tuxverde=pygame.image.load(tuxverde).convert_alpha()
tuxverme=pygame.image.load(tuxverme).convert_alpha()
tuxamare=pygame.image.load(tuxamare).convert_alpha()
tuxbran=pygame.image.load(tuxbran).convert_alpha()
tuxazul=pygame.image.load(tuxazul).convert_alpha()

#semelhante ao update(), mas ele naum mela a tela como o update()faz 
pygame.display.flip()
 
pygame.key.set_repeat(10, 1000)

def pause():
    while True:
        ecra.blit(pygame.font.SysFont("tahoma", 40).render("Pause " ,True, (255,255,255)), (200, 300))
        pygame.display.flip()
        tecla= pygame.key.get_pressed()
        if tecla[K_ESCAPE]:
            pygame.mixer.music.play()
            break
        
def musica(ypos,lista,p,pontos):
    x=ypos - lista[0] #desse jeito é possivel contabilizar a pontuação em todas as notas
    lista.remove(lista[0])
    nota(p[0],x)#cria a nota
    nota(p[1],x) 
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
        return pontos

#cores    
corverde=(0,255,0)
corverme=(255,0,0)
coramarelo=(230,170,0)
corazul=(0,0,255)
corbran=(230,255,255)

lista=[0, 200, 400, 500, 700, 800, 1000, 1100, 1250, 1350, 1450, 1550, 1650, 1750, 1850, 1950, 2050, 2150,
        2250, 2400, 2600, 2800, 2900, 3100, 3200, 3400, 3500, 3600, 3700, 3800, 3900, 4000, 4100, 4200
        ,4300,4400,4500,4600,4700,5200,5000,5400,5600,5800,13550,13550,13550,13550,13550,13550,13550,
        13550,13550,13550,13550,13550,13550,13550,13550,13550,13550,13550,13550,13550,13550,13550,13550,13550,
        13550]
a = len(lista)

#o jogo realmente começa aki
while True:       
    clock.tick(30)
    for event in pygame.event.get():
        if event.type==QUIT:
            exit()   
    #pontos=acorde(ypos,xpos,pontos)
    #fill = fundo da tela, qndo for colocar uma imagem de fundo altera
    ecra.fill((0,0,0))
    
    ypos+=(10)
    
    #mudar a cor respectiva ao botão
    tecla= pygame.key.get_pressed()                     
    #blitando imagens   
    #ecra.blit(background,(-250,40))          
    ecra.blit(holoEsq,(0,50))
    ecra.blit(holoDir,(580,50))   
    
    
    ecra.blit(tuxverde,(200,500))
    ecra.blit(tuxverme,(290,500))
    ecra.blit(tuxamare,(380,500))
    ecra.blit(tuxazul,(470,500))
    ecra.blit(tuxbran,(560,500))
    
    if (tecla[K_F2] or tecla[K_F3] or tecla[K_F4] or tecla[K_F5] or tecla[K_F6] or tecla[K_SPACE]):
        ecra.blit(tuxbatera1,(320,150))
        ecra.blit(baixo1,(0,100))
        ecra.blit(tuxlash2,(550,150))
        
    else:
        ecra.blit(tuxbatera,(320,150))
        ecra.blit(baixo,(0,100))
        ecra.blit(tuxlash,(550,150))    
        
    lista=[0, 200, 400, 500, 700, 800, 1000, 1100, 1250, 1350, 1450, 1550, 1650, 1750, 1850, 1950, 2050, 2150,
            2250, 2400, 2600, 2800, 2900, 3100, 3200, 3400, 3500, 3600, 3700, 3800, 3900, 4000, 4100, 4200
            ,4300,4400,4500,4600,4700,5200,5000,5400,5600,5800,6000,6200,6400]
    
    #musica fica aqui
    x=ypos - lista[0]
    p = (posverde,posverme)
    lista.remove(lista[0])
    nota(p[0],x)
    nota(p[1],x) 
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
        
    x=ypos - lista[0]
    p = (posverde,posverme)
    lista.remove(lista[0])
    nota(p[0],x)
    nota(p[1],x) 
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)

    x=ypos - lista[0]
    p = (posamare,posazul)
    lista.remove(lista[0])
    nota(p[0],x)
    nota(p[1] ,x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
        
    x=ypos - lista[0]
    p = (posamare,posazul)
    lista.remove(lista[0])
    nota(p[0],x)
    nota(p[1] ,x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
       
    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posamare,posbran)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
 
    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posamare,posbran)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)

    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posverde,posamare)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)

    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posverde,posamare)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)

    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posazul,posbran)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)


    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posazul,posbran)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
        
    x=ypos - lista[0]
    p = (posazul,posbran)
    lista.remove(lista[0])
    nota(p[0],x)
    nota(p[1],x) 
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)

    x=ypos - lista[0]
    p = (posazul,posbran)
    lista.remove(lista[0])
    nota(p[0],x)
    nota(p[1],x) 
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
        
    x=ypos - lista[0]
    p = (posazul,posbran)
    lista.remove(lista[0])
    nota(p[0],x)
    nota(p[1],x) 
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)

           
    x=ypos - lista[0]
    p = (posazul,posbran)
    lista.remove(lista[0])
    nota(p[0],x)
    nota(p[1] ,x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)

    x=ypos - lista[0]
    p = (posazul,posbran)
    lista.remove(lista[0])
    nota(p[0],x)
    nota(p[1] ,x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
        
    x=ypos - lista[0]
    p = (posbran,posazul)
    lista.remove(lista[0])
    nota(p[0],x)
    nota(p[1] ,x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
       
    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posazul,posbran)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
 
    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posazul,posbran)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)


    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posazul,posbran)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)

    x=ypos - lista[0]
    p = (posverde,posverme)
    lista.remove(lista[0])
    nota(p[0],x)
    nota(p[1],x) 
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
        
    x=ypos - lista[0]
    p = (posverde,posverme)
    lista.remove(lista[0])
    nota(p[0],x)
    nota(p[1],x) 
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)

    x=ypos - lista[0]
    p = (posamare,posazul)
    lista.remove(lista[0])
    nota(p[0],x)
    nota(p[1] ,x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
        
    x=ypos - lista[0]
    p = (posamare,posazul)
    lista.remove(lista[0])
    nota(p[0],x)
    nota(p[1] ,x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
       
    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posamare,posbran)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
 
    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posamare,posbran)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)

    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posverde,posamare)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)

    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posverde,posamare)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)

    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posazul,posbran)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)


    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posazul,posbran)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
        
    x=ypos - lista[0]
    p = (posazul,posbran)
    lista.remove(lista[0])
    nota(p[0],x)
    nota(p[1],x) 
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)

    x=ypos - lista[0]
    p = (posazul,posbran)
    lista.remove(lista[0])
    nota(p[0],x)
    nota(p[1],x) 
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
        
    x=ypos - lista[0]
    p = (posazul,posbran)
    lista.remove(lista[0])
    nota(p[0],x)
    nota(p[1],x) 
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)

           
    x=ypos - lista[0]
    p = (posazul,posbran)
    lista.remove(lista[0])
    nota(p[0],x)
    nota(p[1] ,x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)

    x=ypos - lista[0]
    p = (posazul,posbran)
    lista.remove(lista[0])
    nota(p[0],x)
    nota(p[1] ,x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
        
    x=ypos - lista[0]
    p = (posbran,posazul)
    lista.remove(lista[0])
    nota(p[0],x)
    nota(p[1] ,x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
       
    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posazul,posbran)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
 
    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posazul,posbran)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)

    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posazul,posbran)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)


    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posamare,posazul)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)

    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posamare,posazul)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
        
    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posamare,posazul)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos) 

    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posverme,posazul)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posverme,posazul)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)

    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posverme,posazul)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)

    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posamare,posazul)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
        
    x=ypos - lista[0]
    lista.remove(lista[0])
    p = (posamare,posazul)
    nota(p[0],x)    
    nota(p[1],x)
    if x==500:
        pontos=notaok(p[0],p[1],x,pontos)
        
    if x>=800:
        #criando um arquivo com a pontuação
        arquivo = open('pontos.txt','w')
        arquivo.write(str(pontos))
        arquivo.close()
        
        #criando um arquivo com o numero de notas, para criar a poncentagem
        arquivo = open('porcertagem.txt','w')
        arquivo.write(str(a))
        arquivo.close()
        
        execfile('pontuacao0.py')
    
    #blitando pontuação
    ecra.blit(pygame.font.SysFont("tahoma", 50).render("Pontuacao: " + str(int(pontos)), True, (255,255,255)), (200, 550))    
    pygame.display.flip()         
